/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Logistica.Controlador;


import CharliesCookies.MainController;
import com.dp1.pucp.Modelo.Clases.*;
import com.dp1.pucp.Logistica.DAO.*;
import com.dp1.pucp.Logistica.Vista.*;
import com.dp1.pucp.Seguridad.DAO.LogDAO;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
//import sun.org.mozilla.javascript.internal.regexp.SubString;
//import sun.security.util.Length;

/**
 *
 * @author ubuntu64
 */
public class MantLineaPedidoCompraControlador {
    private TipoProductoDAO m;
    private MantLineaPedidoCompraGUI LineaCompraView;
    private Pedidocompra pedidocompra;
    private Tipoproducto tipoproducto;
    private ArrayList<String> lstTipo;
    private ArrayList<Lineapedidocompra> lstLineaPedido;
     private ArrayList<Lineapedidocompra> lstLinea;
    private MantPedidoCompraControlador mantPedidoCompraControlador;
    private final static int ESTADO_ACTIVO=1;
    private int cont=0;
    
    public MantLineaPedidoCompraControlador(){}
    
    public MantLineaPedidoCompraControlador(TipoProductoDAO dao, MantLineaPedidoCompraGUI view, MantPedidoCompraControlador buc, Lineapedidocompra a,String n,String c,ArrayList<Lineapedidocompra> LineaPedido){
        m = dao;
        LineaCompraView = view;
        mantPedidoCompraControlador = buc;
        lstLineaPedido= LineaPedido;
        //tipoproducto=b;
        //lineapedidocompra=a;
            if(LineaCompraView.getCodigo().equals("")){
            llenaCodigo();
            }
            
            LineaCompraView.setFormUsuario(n,c);
        
        llenarTipoCombo();
        //LineaCompraView.addEditarListener(new editarLineaPedidoListener(this));
        LineaCompraView.addCancelarListener(new cancelarListener());
        LineaCompraView.addNuevoListener(new crearLineaPedidoListener(this));              
        LineaCompraView.addGuardarListener(new guardarLineaPedidoListener());
        LineaCompraView.addEliminarListener(new eliminarListener() );
        
    }
    
    public void listarResultados(int cod){
        lstLinea = m.listarLinea(cod);               
        LineaCompraView.llenaGrilla(lstLinea);        
    }
    
    private void llenarTipoCombo(){
        lstTipo = m.listarMotivoPedidoCompra();
        LineaCompraView.llenaComboEstado(lstTipo);
    }
    
    class eliminarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {            
            int sel=LineaCompraView.getFilaSel();
            if (sel!=-1){
                //AlmacenGUI p = new AlmacenGUI(InsumoProductoView.getPadre(), true);
                Lineapedidocompra u = lstLinea.get(sel);                
                
                m.eliminarLineaPedido(u);
                lstLinea = m.listarLineaPedido(u.getPedidocompra().getIdpedidocompra());               
                LineaCompraView.llenaGrilla(lstLinea);               
            }
        }
    }
    
    
    private void llenaCodigo(){

        String codigo="";
        
        Pedidocompra pedido = m.sacarUltCodPedido();
         if (pedido.getCodigo()==null) {
             pedido.setCodigo("PED00000001");
             codigo=pedido.getCodigo();
         }
         else{
       codigo=pedido.getCodigo();
        //aca saca el codigo mas grande  PED00000001

       // if (pedido.getCodigo()==null{
        //  LineaCompraView.llenaCodigo("PED00000001");}

            String ceros="";
            //Genero Codigo Siguiente
            String ped= codigo.substring(0, 3);
            String num=codigo.substring(3, 11);
            int longC=num.length(); //aca siempre es 8

            int numero=Integer.parseInt(num);
            numero++;

            String nume=String.valueOf(numero);
            //saco longitud de ese entero en caracteres
            int longE=nume.length();

            for(int i=1;i<(longC-longE+1);i++){
                ceros=ceros+'0';
            }

            codigo= ped+""+ceros+""+numero;
            
        }
         LineaCompraView.llenaCodigo(codigo);
         
}
    

    
    class crearLineaPedidoListener implements ActionListener {
        
        private MantLineaPedidoCompraControlador buc;
        public crearLineaPedidoListener(MantLineaPedidoCompraControlador buscarusr){
            buc=buscarusr;
        }
                
        @Override
        public void actionPerformed(ActionEvent e) {
            
            Pedidocompra a = new Pedidocompra();
            a.setCodigo(LineaCompraView.getCodigo());
            a.setEstado(ESTADO_ACTIVO);
            
            SimpleDateFormat formatoFecha=new SimpleDateFormat("dd/MM/yyyy");
            Date nuevaFecha=null;
            try{
            nuevaFecha=formatoFecha.parse(LineaCompraView.getFecha());
            a.setFechasolicitud((nuevaFecha));
            }catch(Exception ex){
            }
           
            int motivo=LineaCompraView.getMotivo();
            
            if(motivo==0){
                a.setMotivo("Pedido Cliente");
            }
             if(motivo==1){
                a.setMotivo("PoliticaS");
            }
             
            if (pedidocompra!=null)
                a.setIdpedidocompra(pedidocompra.getIdpedidocompra());
            
           
            //Habilitar botones
            //LineaCompraView.setBotones();
            
              
            
            LineaPedidoCompraGUI p = new LineaPedidoCompraGUI(LineaCompraView.getPadre(), true);
            String cod=LineaCompraView.getCodigo();
            LineaPedidoCompraControlador c = new LineaPedidoCompraControlador (m,p,LineaCompraView,buc,null,null,cod);
            if(cont==0) {
            m.guardarPedido(a);
            LogDAO.insertarLog(MainController.usuario, "Agregar Pedido de Compra");
            cont=1;
            }
            //mantPedidoCompraControlador.listarResultados();
            p.setVisible(true);
        }
    
    }
    
    class editarLineaPedidoListener implements ActionListener {
        
        private MantLineaPedidoCompraControlador buc;
        public editarLineaPedidoListener(MantLineaPedidoCompraControlador buscarusr){
            buc=buscarusr;
        }
        @Override
        public void actionPerformed(ActionEvent e) {            
            int sel=LineaCompraView.getFilaSel();
            if (sel!=-1){
                LineaPedidoCompraGUI p = new LineaPedidoCompraGUI(LineaCompraView.getPadre(), true);
                Lineapedidocompra u = lstLinea.get(sel);
                String cod=LineaCompraView.getCodigo();
                LineaPedidoCompraControlador c = new LineaPedidoCompraControlador (m,p,u,cod,buc);
                
                //mantPedidoCompraControlador.listarResultados();
                //mantLineaPedidoCompraControlador.listarResultados(codPe);
                p.setVisible(true);                
            }
        }
    
    }
    
    class listarResultados implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            LineaCompraView.dispose();
        }        
    }
    
        
    class guardarLineaPedidoListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            
            LineaCompraView.mostrarAviso("Se guardo exitosamente el pedido de compra");
            LineaCompraView.dispose();
             mantPedidoCompraControlador.listarResultados();
            
//            Pedidocompra a = new Pedidocompra();
//            a.setCodigo(LineaCompraView.getCodigo());
//            a.setEstado(ESTADO_ACTIVO);
//            
//            SimpleDateFormat formatoFecha=new SimpleDateFormat("dd/MM/yyyy");
//            Date nuevaFecha=null;
//            try{
//            nuevaFecha=formatoFecha.parse(LineaCompraView.getFecha());
//            a.setFechasolicitud((nuevaFecha));
//            }catch(Exception ex){
//            }
//           
//            int motivo=LineaCompraView.getMotivo();
//            
//            if(motivo==0){
//                a.setMotivo("Politicas");
//            }
//             if(motivo==1){
//                a.setMotivo("Pedido Cliente");
//            }
//             
//            if (pedidocompra!=null)
//                a.setIdpedidocompra(pedidocompra.getIdpedidocompra());
//            
//            m.guardarPedido(a);
//            //Habilitar botones
//            //LineaCompraView.setBotones();
//            
//            mantPedidoCompraControlador.listarResultados();                       
        }
    }
    
    class cancelarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            LogDAO.insertarLog(MainController.usuario, "Salir Agregar Pedido de Compra");
            LineaCompraView.dispose();
        }        
    }    
           
    
    class limpiarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            LineaCompraView.LimpiarDatos();
        }        
    } 
}
